(1) Execute the program by typing

java -jar blodec PARAMETERS

The available parameters are the following:

help 			 prints the list of available parameters
infile=NAME 		 name of nexus file containing the input 
                         distance matrix (must be provided)
outfile=NAME 		 name of nexus file to which the output is 
                         written (must be provided)
verbose=[YES|NO] 	 enable output of status messages in the terminal 
                         during computation (default: NO)
taxa=[YES|NO] 		 use list of taxa in the file containing the input 
                         distance matrix (default: NO)
inputmetric=[YES|NO] 	 include input distance matrix into output file (default: NO)
blocksplits=[YES|NO] 	 include block splits in output file (default: NO)
cutpoints=[YES|NO] 	 include list of cutpoints in output file (default: YES)
blocks=[YES|NO] 	 include list of blocks in output file (default: NO)
partialmetrics=[YES|NO]  include list of metrics on the vertex set of each 
                         block in output file (default: NO)
blockmetrics=[YES|NO] 	 include list of metrics in the block decomposition 
                         in output file (default: NO)

Examples:

(a) java -jar blodec infile=input.nex outfile=output.nex

    This will read the distance matrix in "input.nex",
    compute the list of cutpoints for this distance
    and write this list to the file "output.nex".

(b) java -jar blodec infile=input.nex outfile=output.nex blocks=YES

    This will, in addition to the list of cutpoints
    also compute the list of blocks and write them
    into "output.nex".

Note that the order of the parameters is not important.
For example,

(c) java -jar blodec blocks=YES outfile=output.nex infile=input.nex

will produce the same output as (b).

--------------------------------------------------------------------

(2) Limitations of the program

Input file and output file cannot
be the same file. 

Internally the class BigInteger is used.
Therefore, all computations are exact.
This avoids problems we encountered due 
to rounding errors and also avoids the 
limitations of the fixed length integer
 types such as "int" and "long". The 
drawback is that the computation using 
BigInteger is much slower.

If the input distance matrix has non-integer
entries then the entries are internally scaled
by a power of 10 to make them integers.
At the end the scaling factor is applied
to produce the correctly scaled, possibly
non-integer output.

If the input distance matrix is integer
then it is also internally further scaled 
so that all resulting integer entries are even.
This ensures that the coordinates of all 
cut points computed are integers too.
At the and, the output is again correctly 
scaled.

Currently the most time consuming part
is the computation of the block metrics.
This has been implemented in a very straight
forward way and needs to be improved in
case it is a useful feature at all. However,
input matrices with up to 50 rows should
be doable with the current implementation.

The only checks that are routinely done are
*test whether the input matrix satisfies the
triangle inequality
*test whether the block metrics really sum
up to the given distance matrix (in case the
block metrics are computed at all).

--------------------------------------------------------------------

(3) Format of the output
The output nexus file contains the following
blocks:

*TAXA
This is just number in {1,2,...,nrows}.

*SPLITS
The list of block splits.

*CUTPOINTS
The list of cut points. The ordering of
the coordinates of each cut point is the
same as the ordering of the taxa in the 
input distance matrix. The Kuratowski
maps are listed up front in the same
order as the taxa in the taxa block.

*BLOCKS
The list of blocks. Each block is a list
of indices that refer to the index of
the cut point in the list of cut points.

*PARTIALMETRICS
The metrics on the cut points contained
in a block.

*BLOCKMETRICS
The metrics in the block decomposition
of the given metric.

(please see also the examples in folder 
"examples")






